Check completeness of a binary tree [BFS]

Time: O(N); Space: O(W); medium

Given a binary tree, determine if it is a complete binary tree.

Definition of a complete binary tree from Wikipedia:

In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.

Example 1:

Input: root = {TreeNode} [1,2,3,4,5,6]

Output: True

Explanation:

  • Every level before the last is full (ie. levels with node-values {1} and {2, 3}), and all nodes in the last level ({4, 5, 6}) are as far left as possible.

Example 2:

Input: root = {TreeNode} [1,2,3,4,5,null,7]

Output: False

Explanation:

  • The node with value 7 isn’t as far left as possible.

Note:

  • The tree will have between 1 and 100 nodes.

[10]:
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None